package com.atguigu.zy.interview.javase;

/**
 * @Author : Jungle
 * @Description :
 */
public class TestTransferValue {
    public void changeValue1(int age) {
        age = 30;
    }

    public void changeValue2(Person person) {
        person.setPersonName("xxx");
    }

    public void changeValue3(String str) {
        str = "xxx";
    }
    /**
     * 1、堆存储 栈运行， 方法在栈里面
     *
     */
    public static void main(String[] args) {
        TestTransferValue test = new TestTransferValue();
        /**
         * 1、打印的是栈里面的age  修改的方法区里面的age,所以打印不变
         */
        int age = 20;
        test.changeValue1(age);
        System.out.println("age----" + age);
        /**
         *  2、打印和修改的都是堆里面的对象，所以结果改了
         */
        Person person = new Person("abc");
        test.changeValue2(person);
        System.out.println("personName=======" + person.getPersonName());
        /**
         * 1、字符串是一个final类型，改变值就是新建
         * 存常量池中， 存在元空间，也就是方法区
         * 常量池字中有就拿池字中的，没有就新建一个
         */
        String str = "abc";
        test.changeValue3(str);
        System.out.println("String=====" + str);
    }
}
